vue生命周期
生命周期 | 描述 |
---|---|
beforeCreate | 组件实例刚被创建,组件属性创建之前,如data属性 |
created | 组件实例创建完成,属性已绑定,但DOM还未生成, $el属性还不存在 |
beforeMount | 模板编译 / 挂载之前 |
Mounted | 模板编译 / 挂载之后 |
beforeUpdate | 组件更新之前 |
updated | 组件更新之后 |
beforeDestory | 组件销毁前调用 |
destoryed | 组件销毁后调用 |
模板语法
- 使用双大括号语法
- 通过使用v-once指令,你也能执行一次性的插值
- 双大括号将数据解释为普通文本,而非html代码.为了输出真正的html代码,你需要使用v-html指令
- 使用v-bind来绑定动态属性
- 2.6版本新增动态指令 v-bind[attr] attr为一个动态值
- v-bind 缩写 : v-on 缩写 @
计算属性和侦听器
- 计算属性是基于它们的依赖进行缓存的,只要依赖值没有发生改变,多次访问计算属性,会立即返回之前的计算结果.
class与style绑定
- 除了可以是字符串之外,还可以是对象或数组
- v-bind:class="{}", :class="[]", :class="className", class="classNamestring"
- v-bind:style中css属性名可以用驼峰式或短横线分隔(记得用单引号括起来)
- :style="{属性名: 属性值}", :style="[表示属性键值对的变量 ,表示属性键值对的变量]"
- v-bind:style 会自动添加浏览器引擎前缀.
v-if条件渲染
- 如果想切换多个元素,把<template>元素当做不可见的包裹元素并在<template>元素上使用v-if
- v-else 来表示"else块", v-else-if 表示 "else-if块"
- 带有v-show 的元素始终会被渲染并保留在DOM中, v-show只是简单地切换元素css属性display.
- v-show不支持<template>元素
5.
v-if | v-show | |
---|---|---|
初始渲染条件为假,不渲染 | 不管初始条件是什么,元素总是会渲染,并只是简单地基于css进行切换 | |
有更高的切换开销 | 有更高的初始化渲染开销 |
- 不推荐同时使用v-if和v-for(哪怕只渲染出一小部分元素,也得每次重新渲染的时候遍历整个列表)
- 当v-if与v-for一起使用时,v-for具有比v-if更高的优先级
列表渲染
- 遍历对象为对象时: 第一个参数为键值, 第二个参数为键名, 第三个参数为索引, 遍历对象为数组时: 第一个参数为值, 第二个参数为索引.
- 建议尽可能使用v-for时,每项都 提供一个唯一的key属性, :key="id"
- Vue不能检测对象属性的添加和删除
- Vue不能检测以下变动数组: 1> 当你利用索引直接设置一个项 2> 修改数组的长度.
- 可以利用带v-for的<template>渲染多个元素
事件处理
- 可以用v-on监听DOM事件,并在触发时运行一些js代码.
- 除了直接绑定一个方法,也可以在js语句中调用方法(传参)
- 访问原始DOM事件,可以用特殊变量$event把它传入方法
-
事件修饰符
事件修饰符 描述 .stop 阻止冒泡 .prevent 阻止默认行为 .capture 监听捕获事件 .once 只执行一次 .self 只当event.target 是当前元素自身时触发处理函数 .passive 表示 listener 永远不会调用 preventDefault()。如果 listener 仍然调用了这个函数,客户端将会忽略它并抛出一个控制台警告(来自mdn) 文档上说: .passive 修饰符尤其能够提升移动端的性能。
表单输入绑定
- v-model 会忽略所有表单元素的value, checked, selected特性的初始值
2.
修饰符 | 描述 | |
---|---|---|
.lazy | input事件转变为change事件 | |
.number | 自动将输入值转为数值类型 | |
.trim | 自动过滤用户输入的收尾空白字符 |
组件基础
- data 必须是一个函数
- 每个组件必须只有一个根元素
- <input v-model="searchText"> 等价于 <input v-bind:value="searchText" v-on:input="searchText = $event.target.value" />
- 组件名 一种是: kebab-case 一种是 PascalCase
- porp特性名: camelCase 等价于 kabab-case
- 事件名: 完全匹配, 推荐始终使用kebab-case的事件名
- 插槽作用域: 父级模板里的所有内容都是在父级作用域中编译的;子模板里的所有内容都是在子作用域中编译的.
未完待续...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。